const express = require('express');

const db = require('./db');

const app = express();

// 定义数据传输规格 content-type
app.use(express.urlencoded());
app.use(express.json());

// 获取用户列表
app.get('/', async (req, res) => {
  let jsonData = await db.getDb();
  res.send(jsonData.users);
});

// 创建用户
app.post('/', async (req, res) => {
  let body = req.body;
  if (!body) {
    res.status(403).json({
      error: '缺少用户信息',
    });
  }

  let jsonObj = await db.getDb();
  body.id = jsonObj.users[jsonObj.users.length - 1].id + 1;
  // 添加用户信息
  jsonObj.users.push(body);

  // 写入文件
  try {
    let result = await db.saveDb(jsonObj);
    if (!result) {
      res.status(200).json({
        message: '创建成功',
      });
    } else {
      res.status(402).json({
        message: '创建失败',
      });
    }
  } catch (error) {
    res.status(500).json({
      error,
    });
  }

  res.send(jsonObj);
});

// 修改用户信息
app.put('/:id', async (req, res) => {
  // 读取参数
  let userId = req.params.id;
  let body = req.body;

  // 查找是否存在指定用户
  let jsonObj = await db.getDb();
  let findRes = jsonObj.users.find((o) => o.id == userId);
  if (!findRes) {
    res.status(400).json({
      message: '用户不存在',
    });
  }

  // 替换用户信息
  body.id = findRes.id;
  jsonObj.users[userId - 1] = body;

  console.log(jsonObj);
  let result = await db.saveDb(jsonObj);
  if (!result) {
    res.status(200).json({
      message: '修改成功',
    });
  } else {
    res.status(203).json({
      message: '修改失败',
    });
  }
});
app.listen(3000, () => {
  console.log('创建3000连接');
});
